﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using SVC_DAL;

namespace SVC_BLL
{
    public class ProdutosBLL
    {
        public int pro_codigo { get; set; }
        public String pro_nome { get; set; }
        public int pro_quantidade { get; set; }
        public Double pro_precoCusto { get; set; }
        public Double pro_precoVenda { get; set; }        
        public int pro_categoria { get; set; }
        public int pro_grupo { get; set; }
        public int pro_subGrupo { get; set; }
        public int pro_unidade { get; set; }
        public int pro_estoqueMin { get; set; }
        public int pro_estoqueMax { get; set; }
        public DateTime pro_dataCadastro { get; set; }
        public String pro_codigoBarra { get; set; }
        public int pro_marca { get; set; }
        public int pro_fornecedor { get; set; }
        public int pro_tamanho { get; set; }
        public Double pro_margem { get; set; }
        public Double pro_comissao { get; set; }

        public ProdutosBLL()
        { }

        ProdutosDAL objDAL = null;

        public void limpar()
        {
            try
            {
                this.pro_codigo = 0;
                this.pro_nome = null;
                this.pro_quantidade = 0;
                this.pro_precoCusto = 0;
                this.pro_precoVenda = 0;
                this.pro_categoria = 0;
                this.pro_grupo = 0;
                this.pro_subGrupo = 0;
                this.pro_unidade = 0;
                this.pro_estoqueMin= 0;
                this.pro_estoqueMax = 0;
                this.pro_dataCadastro = DateTime.Now;
                this.pro_codigoBarra = null;
                this.pro_marca = 0;
                this.pro_fornecedor = 0;
                this.pro_tamanho = 0;
                this.pro_margem = 0;
                this.pro_comissao = 0;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void inserir()
        {
            try
            {
                objDAL = new ProdutosDAL();
                this.pro_codigo = objDAL.inserir(this.pro_nome, this.pro_quantidade, this.pro_precoCusto, this.pro_precoVenda, this.pro_categoria, this.pro_grupo, this.pro_subGrupo, this.pro_unidade, this.pro_estoqueMin, this.pro_estoqueMax, this.pro_dataCadastro, this.pro_codigoBarra,this.pro_marca,this.pro_fornecedor, this.pro_tamanho, this.pro_margem,this.pro_comissao);
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void alterar()
        {
            try
            {
                objDAL = new ProdutosDAL();
                objDAL.alterar(this.pro_codigo, this.pro_nome, this.pro_quantidade, this.pro_precoCusto, this.pro_precoVenda, this.pro_categoria, this.pro_grupo, this.pro_subGrupo, this.pro_unidade, this.pro_estoqueMin, this.pro_estoqueMax, this.pro_dataCadastro, this.pro_codigoBarra, this.pro_marca,this.pro_fornecedor,this.pro_tamanho, this.pro_margem,this.pro_comissao);
                objDAL = null;

            }
            catch (Exception)
            {

                throw;
            }
        }

        public void alterarQuantidade()
        {
            try
            {
                objDAL = new ProdutosDAL();
                objDAL.alterarQuantidade(this.pro_codigo, this.pro_quantidade);
                objDAL = null;

            }
            catch (Exception)
            {

                throw;
            }
        }

        public void excluir()
        {
            try
            {
                objDAL = new ProdutosDAL();
                objDAL.excluir(this.pro_codigo);
                objDAL = null;

            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizar()
        {
            try
            {
                objDAL = new ProdutosDAL();
                this.pro_codigo = objDAL.localizar(this.pro_codigo);
                objDAL = null;

            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizar(String descricao, String atributo)
        {
            try
            {
                DataTable tab;
                objDAL = new ProdutosDAL();
                
                tab = objDAL.localizar(descricao, atributo);
                        if (tab.Rows.Count > 0)
                        {
                            this.pro_codigo = int.Parse(tab.Rows[0]["pro_codigo"].ToString());
                            this.pro_nome = tab.Rows[0]["pro_nome"].ToString();
                            this.pro_quantidade = int.Parse(tab.Rows[0]["pro_quantidade"].ToString());
                            this.pro_precoCusto = Double.Parse(tab.Rows[0]["pro_precoCusto"].ToString());
                            this.pro_precoVenda = Double.Parse(tab.Rows[0]["pro_precoVenda"].ToString());
                            this.pro_categoria = int.Parse(tab.Rows[0]["pro_categoria"].ToString());
                            if (tab.Rows[0]["pro_grupo"] != DBNull.Value)
                                this.pro_grupo = int.Parse(tab.Rows[0]["pro_grupo"].ToString());
                            else
                                this.pro_grupo = 0;
                            if (tab.Rows[0]["pro_subGrupo"] != DBNull.Value)
                                this.pro_subGrupo = int.Parse(tab.Rows[0]["pro_subGrupo"].ToString());
                            else
                                this.pro_subGrupo = 0;
                            if (tab.Rows[0]["pro_unidade"] != DBNull.Value)
                                this.pro_unidade = int.Parse(tab.Rows[0]["pro_unidade"].ToString());
                            else
                                this.pro_unidade = 0;
                            this.pro_estoqueMin = int.Parse(tab.Rows[0]["pro_estoqueMin"].ToString());
                            this.pro_estoqueMax = int.Parse(tab.Rows[0]["pro_estoqueMax"].ToString());
                            this.pro_dataCadastro = DateTime.Parse(tab.Rows[0]["pro_dataCadastro"].ToString());
                            if (tab.Rows[0]["pro_codigoBarra"] != DBNull.Value)
                                this.pro_codigoBarra = tab.Rows[0]["pro_codigoBarra"].ToString();
                            else
                                this.pro_codigoBarra = null;
                            this.pro_marca = int.Parse(tab.Rows[0]["pro_marca"].ToString());
                            this.pro_fornecedor = int.Parse(tab.Rows[0]["pro_fornecedor"].ToString());
                            if (tab.Rows[0]["pro_tamanho"] != DBNull.Value)
                                this.pro_tamanho = int.Parse(tab.Rows[0]["pro_tamanho"].ToString());
                            else
                                this.pro_tamanho = 0;
                            if (tab.Rows[0]["pro_margem"] != DBNull.Value)
                                this.pro_margem = Double.Parse(tab.Rows[0]["pro_margem"].ToString());
                            else
                                this.pro_margem = 0;
                            if (tab.Rows[0]["pro_comissao"] != DBNull.Value)
                                this.pro_comissao = Double.Parse(tab.Rows[0]["pro_comissao"].ToString());
                            else
                                this.pro_comissao = 0;
                        }
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizarLeave(String descricao, String atributo)
        {
            try
            {
                DataTable tab;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizarLeave(descricao, atributo);
                    if (tab.Rows.Count > 0)
                    {
                        this.pro_codigo = int.Parse(tab.Rows[0]["pro_codigo"].ToString());
                        this.pro_nome = tab.Rows[0]["pro_nome"].ToString();
                        this.pro_quantidade = int.Parse(tab.Rows[0]["pro_quantidade"].ToString());
                        this.pro_precoCusto = Double.Parse(tab.Rows[0]["pro_precoCusto"].ToString());
                        this.pro_precoVenda = Double.Parse(tab.Rows[0]["pro_precoVenda"].ToString());
                        this.pro_categoria = int.Parse(tab.Rows[0]["pro_categoria"].ToString());
                        if (tab.Rows[0]["pro_grupo"] != DBNull.Value)
                            this.pro_grupo = int.Parse(tab.Rows[0]["pro_grupo"].ToString());
                        else
                            this.pro_grupo = 0;
                        if (tab.Rows[0]["pro_subGrupo"] != DBNull.Value)
                            this.pro_subGrupo = int.Parse(tab.Rows[0]["pro_subGrupo"].ToString());
                        else
                            this.pro_subGrupo = 0;
                        if (tab.Rows[0]["pro_unidade"] != DBNull.Value)
                            this.pro_unidade = int.Parse(tab.Rows[0]["pro_unidade"].ToString());
                        else
                            this.pro_unidade = 0;
                        this.pro_estoqueMin = int.Parse(tab.Rows[0]["pro_estoqueMin"].ToString());
                        this.pro_estoqueMax = int.Parse(tab.Rows[0]["pro_estoqueMax"].ToString());
                        this.pro_dataCadastro = DateTime.Parse(tab.Rows[0]["pro_dataCadastro"].ToString());
                        if (tab.Rows[0]["pro_codigoBarra"] != DBNull.Value)
                            this.pro_codigoBarra = tab.Rows[0]["pro_codigoBarra"].ToString();
                        else
                            this.pro_codigoBarra = null;
                        this.pro_marca = int.Parse(tab.Rows[0]["pro_marca"].ToString());
                        this.pro_fornecedor = int.Parse(tab.Rows[0]["pro_fornecedor"].ToString());
                        if (tab.Rows[0]["pro_tamanho"] != DBNull.Value)
                            this.pro_tamanho = int.Parse(tab.Rows[0]["pro_tamanho"].ToString());
                        else
                            this.pro_tamanho = 0;
                        if (tab.Rows[0]["pro_margem"] != DBNull.Value)
                            this.pro_margem = Double.Parse(tab.Rows[0]["pro_margem"].ToString());
                        else
                            this.pro_margem = 0;
                        if (tab.Rows[0]["pro_comissao"] != DBNull.Value)
                            this.pro_comissao = Double.Parse(tab.Rows[0]["pro_comissao"].ToString());
                        else
                            this.pro_comissao = 0;
                    }
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public DataTable localizarComRetorno(String descricao, String atributo)
        {
            try
            {
                DataTable tab;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizar(descricao, atributo);
                objDAL = null;
                return tab;
            }
            catch (Exception)
            {

                throw;
            }
        }
        //localizarProdutoCodigoBarra
        public DataTable localizarProdutoCodigoBarra(String descricao)
        {
            try
            {
                DataTable tab;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizarProdutoCodigoBarra(descricao);
                objDAL = null;
                return tab;
            }
            catch (Exception)
            {

                throw;
            }
        }
        public DataTable localizarEmTudo(String descricao)
        {
            try
            {
                DataTable tab;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizarEmTudo(descricao);
                objDAL = null;
                return tab;
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void localizarPrimeiroUltimo(String descricao)
        {
            try
            {
                DataTable tab = null;
                int codigo = 0;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizarPrimeiroUltimo(descricao);
                if (tab.Rows.Count > 0)
                    int.TryParse(tab.Rows[0][0].ToString(), out codigo);
                this.pro_codigo = codigo;
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }

        }

        public void localizarProxAnterior(String descricao, int codigo)
        {
            try
            {
                DataTable tab = null;
                objDAL = new ProdutosDAL();
                tab = objDAL.localizarProxAnterior(descricao, codigo);
                if (tab.Rows.Count > 0)
                    this.pro_codigo = int.Parse(tab.Rows[0][0].ToString());
                objDAL = null;
            }
            catch (Exception)
            {

                throw;
            }
        }
    }
}
